package com.fy.proj5_permission_transaction_cache.service;

import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * 缓存服务接口
 */
public interface CacheService {
    // 设置缓存
    boolean set(String key, Object value);
    
    // 设置带过期时间的缓存
    boolean set(String key, Object value, long timeout);
    
    // 设置带过期时间的缓存（完整参数）
    boolean set(String key, Object value, long timeout, TimeUnit unit);
    
    // 获取缓存
    Object get(String key);
    
    // 获取指定类型的缓存
    <T> T get(String key, Class<T> type);
    
    // 删除缓存
    boolean delete(String key);
    
    // 批量删除缓存
    void deleteBatch(String[] keys);
    
    // 按前缀清除缓存
    int clearByPrefix(String prefix);
    
    // 判断缓存是否存在
    boolean exists(String key);
    
    // 递增
    long increment(String key);
    
    // 递减
    long decrement(String key);
    
    // 设置过期时间（默认单位秒）
    boolean expire(String key, Long expireTime);
    
    // 设置过期时间（完整参数）
    boolean expire(String key, long timeout, TimeUnit unit);
    
    // 获取剩余过期时间
    Long getExpire(String key);
    
    // 清除所有缓存
    void clearAll();
    
    // 清除所有缓存（兼容旧接口）
    void clear();
    
    // 根据前缀获取所有键
    List<String> getKeysByPrefix(String prefix);
}